package vip.xiaonuo.app.modular.appauth.controller.front;

import cn.hutool.core.util.ObjectUtil;
import com.google.gson.internal.$Gson$Preconditions;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import vip.xiaonuo.app.core.consts.AppConstant;
import vip.xiaonuo.app.modular.appauth.entity.AppAuthUser;
import vip.xiaonuo.app.modular.appauth.param.front.ApiAuthParam;
import vip.xiaonuo.app.modular.appauth.service.AppAuthUserService;
import vip.xiaonuo.core.context.login.LoginContextHolder;
import vip.xiaonuo.core.pojo.response.ResponseData;

import javax.annotation.Resource;

/**
 * <p>Title : </p>
 * <p>Description : </p>
 * <p>DevelopTools : IDEA</p>
 * <p>DevelopSystem : Windows11</p>
 *
 * @Author : zxw
 * @Date 2023/11/21 11:59
 */
@RestController
@RequestMapping("/api/authUser")
public class ApiAuthUserController {

    @Resource
    private AppAuthUserService appAuthUserService;


    /**
     * 1:实名 2:真人 3:语音
     */
    @PostMapping("/Auth")
    public ResponseData realAuth(@RequestBody ApiAuthParam param) {

        Long userId = LoginContextHolder.me().getSysLoginUser().getId();
        param.setUserId(userId); //用户id
        param.setStatus(AppConstant.AUTH_ONE); //默认是认证中

        //判断认证类型
        if (ObjectUtil.isNotEmpty(param.getType())) {

            //1.实名
            if (param.getType().equals(AppConstant.REAL_AUTH)) {
                //查询是否存在认证中或是已认证
                AppAuthUser appAuthUser = appAuthUserService.getByUseIdAndType(userId, AppConstant.REAL_AUTH);
                if (ObjectUtil.isNotEmpty(appAuthUser)) {
                    if (appAuthUser.getStatus().equals(AppConstant.AUTH_ZERO)) {

                        return ResponseData.error("认证信息已通过，请勿重复提交！");
                    } else if (appAuthUser.getStatus().equals(AppConstant.AUTH_ONE)) {

                        return ResponseData.error("认证信息审核中，请稍后！");
                    }
                }
                //提交
                appAuthUserService.saveAuthUser(param);
                return ResponseData.success();
            }
            //2.真人
            if (param.getType().equals(AppConstant.REAL_NAME_AUTH)) {
                //查询是否存在认证中或是已认证
                AppAuthUser appAuthUser = appAuthUserService.getByUseIdAndType(userId, AppConstant.REAL_NAME_AUTH);
                if (ObjectUtil.isNotEmpty(appAuthUser)) {
                    if (appAuthUser.getStatus().equals(AppConstant.AUTH_ZERO)) {

                        return ResponseData.error("认证信息已通过，请勿重复提交！");
                    } else if (appAuthUser.getStatus().equals(AppConstant.AUTH_ONE)) {

                        return ResponseData.error("认证信息审核中，请稍后！");
                    }
                }
                //提交
                appAuthUserService.saveAuthUser(param);
                return ResponseData.success();
            }
            //语音
            if (param.getType().equals(AppConstant.VOICE_SING)) {
                //查询是否存在认证中或是已认证
                AppAuthUser appAuthUser = appAuthUserService.getByUseIdAndType(userId, AppConstant.VOICE_SING);
                if (ObjectUtil.isNotEmpty(appAuthUser)) {
                    if (appAuthUser.getStatus().equals(AppConstant.AUTH_ZERO)) {

                        return ResponseData.error("认证信息已通过，请勿重复提交！");
                    } else if (appAuthUser.getStatus().equals(AppConstant.AUTH_ONE)) {

                        return ResponseData.error("认证信息审核中，请稍后！");
                    }
                }
                //提交
                appAuthUserService.saveAuthUser(param);
                return ResponseData.success();
            }
        }
        return ResponseData.error("参数错误");
    }


}
